AllCops:
  Includes:
    - '**/*.rake'
    - 'Gemfile'
    - 'Gemfile.devtools'
  Excludes:
    - '**/vendor/**'
    - '**/benchmarks/**'

# Avoid parameter lists longer than five parameters.
ParameterLists:
  Max: 3
  CountKeywordArgs: true

# Limit method length
MethodLength:
  CountComments: false
  Max: 10

# Avoid more than `Max` levels of nesting.
BlockNesting:
  Max: 3

# Align with the style guide.
CollectionMethods:
  PreferredMethods:
    collect:  'map'
    inject:   'reduce'
    find:     'detect'
    find_all: 'select'

# Do not force public/protected/private keyword to be indented at the same
# level as the def keyword. My personal preference is to outdent these keywords
# because I think when scanning code it makes it easier to identify the
# sections of code and visually separate them. When the keyword is at the same
# level I think it sort of blends in with the def keywords and makes it harder
# to scan the code and see where the sections are.
AccessModifierIndentation:
  Enabled: false

# Limit line length
LineLength:
  Max: 150

# Disable documentation checking until a class needs to be documented once
Documentation:
  Enabled: false

# Do not always use &&/|| instead of and/or.
AndOr:
  Enabled: false

# Do not favor modifier if/unless usage when you have a single-line body
IfUnlessModifier:
  Enabled: false

# Allow case equality operator (in limited use within the specs)
CaseEquality:
  Enabled: false

# Constants do not always have to use SCREAMING_SNAKE_CASE
ConstantName:
  Enabled: false

# Not all trivial readers/writers can be defined with attr_* methods
TrivialAccessors:
  Enabled: false

# Do not prefer do/end over {} for multiline blocks
Blocks:
  Enabled: false

# Allow empty lines around body
EmptyLinesAroundBody:
  Enabled: false

# Prefer String#% over Kernel#sprintf
FormatString:
  Enabled: false

# Use square brackets for literal Array objects
PercentLiteralDelimiters:
  PreferredDelimiters:
    '%':  ()
    '%i': '[]'
    '%q': ()
    '%Q': ()
    '%r': '{}'
    '%s': ()
    '%w': '[]'
    '%W': '[]'
    '%x': ()
